package core;

import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

import core.modeling.parser.XMIParser;

public class MainSemantico {
	public static void executeSemanticAnalyzer(String fileName, String xmiPath)
			throws Exception {
		XMIParser.getInstance().setXmiFileName(xmiPath);
		
		XMIParser.getInstance().parse();

		executeSemanticAnalyzer(fileName);
	}
	
	public static void executeSemanticAnalyzer(String fileName)
			throws Exception {
		System.out.println("***************************************");
		System.out.println("Executando analise lexica, sintatica e semantica para " + fileName);
		System.out.println("***************************************");

		AnalisadorSintaticoOcl parser = new AnalisadorSintaticoOcl(
				new AnalisadorLexicoOcl(new FileReader(fileName)));

		parser.parse();
		System.out.println("Analises concluidas com sucesso!");
	}

	public static void main(String[] args) throws IOException {
		if (args.length != 2) {
			System.err
					.println("Forma de uso incorreta! Veja abaixo a formas correta para executar!\n");
			System.err
					.println("\tjava -jar AnalisadorSemanticoOclJml.jar <endereco_do_arquivo_ocl> <endereco_do_xmi>");
			System.exit(1);
		}

		try {
			executeSemanticAnalyzer(args[0], args[1]);
		} catch (Exception e) {
			System.out
					.println(">>> Ocorreu um erro durante a analise, impossivel continuar, veja os logs abaixo:");
			System.out.println(e.getMessage());
			
			if (e instanceof NullPointerException) {
				e.printStackTrace();
			}
		}

		System.out.println("=======================================");
	}
}
